package com.crcode.crm.controller.retrieval;

import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.fastjson.JSONObject;
import com.crcode.crm.bean.user.UserBean;
import com.crcode.crm.service.retrieval.RetrievalService;
import com.crcode.crm.utils.PageVo;
import com.crcode.crm.utils.ResultPageUtil;
/**
 * 检索控制层
 * 
 * @author lxw
 * @date 2018年9月23日 上午10:40:52
 * @version V1.0
 */
@Controller
public class RetrievalController {
 
	@Resource(name = "retrievalService")
	private RetrievalService retrievalService;
	
	/**
	 * 公共查询
	 * @author lxw
	 * @date 2019年3月25日
	 * @param table
	 *            企业表：data_enterprise；项目表：data_project
	 * @param text
	 *            模糊匹配的值，多个以@#@符号隔开，例如：张三@#@李四@#@王五
	 * @param higthText
	 *            高级查询的条件json字符串，多个条件以@#@隔开；条件中为或与非逻辑(AND/OR/非得时候 为:AND,-field,值,0)、字段、值、精确或者模糊(1、模糊，0、精确)；例如：AND,name,张三,1@#@AND,-jop,人寿,0
	 * @param vo 
	 *            分页参数 pageIndex,pageSize必传，orderBy 排序字段，只能单个,orderDesc 正序0，反序1
	 * @param user
	 *            用户
	 * @return
	 */
	@RequestMapping(value="/retrieval/comSearch",method=RequestMethod.POST)
	@ResponseBody
	public ResultPageUtil comSearch(HttpServletRequest request,String table, String text, String higthText, PageVo vo, HttpSession session){
		Object obj = session.getAttribute("user");
		UserBean user = JSONObject.parseObject(obj.toString(), UserBean.class);
		return this.retrievalService.comSearch(table, text, higthText, vo, user);
	}
	
	/**
	 * 附件方案进度检索
	 * @author lxw
	 * @date 2019年4月15日
	 * @param table，方案：data_accessory ；进度：data_progress
	 * @param text 检索词 123@#@12341@#@12312
	 * @param higthText
	 *        高级查询的条件json字符串，多个条件以@#@隔开；条件中为或与非逻辑(AND/OR/非得时候 为:AND,-field,值,0)、字段、值、精确或者模糊(1、模糊，0、精确)；例如：AND,name,张三,1@#@AND,-jop,人寿,0
	 *@param vo 分页工具类 
	 * @param user 用户实体
	 * @return
	 */
	@RequestMapping(value="/retrieval/searchProgressAndAccesssory",method=RequestMethod.POST)
	@ResponseBody
	public ResultPageUtil searchProgressAndAccesssory(HttpServletRequest request,String table, String text,String higthText,PageVo vo){
		
		return this.retrievalService.searchProgressAndAccesssory(table, text, higthText, vo);
	}
	/**
	 * 查询提示总数
	 * @author lxw
	 * @date 2019年4月15日
	 * @param user
	 * @return
	 */
	@RequestMapping(value="/retrieval/messageCount",method=RequestMethod.POST)
	@ResponseBody
	public Map<String, Object> messageCount(HttpServletRequest request,HttpSession session){
		
		Object obj = session.getAttribute("user");
		UserBean user = JSONObject.parseObject(obj.toString(), UserBean.class);
		return this.retrievalService.messageCount(user);
	}
	
	/**
	 * 提示详情
	 * @author lxw
	 * @date 2019年4月15日
	 * @param type 0、企业联系人生日，1、项目下一步时间，2、进度下一步时间
	 * @param vo 分页参数
	 * @param user 
	 * @return
	 */
	@RequestMapping(value="/retrieval/messageDetails",method=RequestMethod.POST)
	@ResponseBody
	public ResultPageUtil messageDetails(Integer type,PageVo vo,HttpServletRequest request,HttpSession session){
		
		Object obj = session.getAttribute("user");
		UserBean user = JSONObject.parseObject(obj.toString(), UserBean.class);
		return this.retrievalService.messageDetails(type, vo, user);
	}
	/**
	 * 根据资源序号分组，时间升序查询进度结果集
	 * @author lxw
	 * @date 2019年4月19日
	 * @param uuid
	 * @param request
	 * @return
	 */
	@RequestMapping(value="/retrieval/loadProgressGroupData",method=RequestMethod.POST)
	@ResponseBody
	public List<Object> loadProgressGroupData(String uuid,HttpServletRequest request){
		
		return this.retrievalService.loadProgressGroupData(uuid);
	}
}
